#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

typedef unsigned char N1;
typedef unsigned long int N4;

int main(int argc,char **argv)
{ N1 cc,c1,c2,c0,s1[16];
  int ii; N4 n;

#if defined(___OS_WIN)
  setmode(fileno(stdin),O_BINARY);
  setmode(fileno(stdout),O_BINARY);
  setmode(fileno(stderr),O_BINARY);
#endif

  c1=(N1)'0'; c2=(N1)'A'; n=0;

  while (1)
  { ii=fgetc(stdin);
    if (ii==-1) break;
    else cc=(N1)ii;
    s1[n&15]=cc;
    if ((n&15)==0)
    { for (ii=8;ii--;)
      { c0=(n>>(ii<<2))&15;
        if (c0<10) c0+=c1;
        else c0+=c2-10;
        fputc(c0,stdout);
      }
      fputs("| ",stdout);
    }
    for (ii=2;ii--;)
    { c0=(cc>>(ii<<2))&15;
      if (c0<10) c0+=c1;
      else c0+=c2-10;
      fputc(c0,stdout);
    }
    fputc(' ',stdout);
    if ((n&15)==7)
      fputs("| ",stdout);
    if ((n&15)==15)
    { fputc('|',stdout);
      for (ii=0;ii<16;++ii)
      { if (ii==8)
          fputc('.',stdout);
        switch (s1[ii])
        { case '\n':
          case '\r':
          case '\t':
          case '\0':
            s1[ii]='.';
        }
        fputc(s1[ii],stdout);
      }
      fputc('|',stdout);
    }
    if (++n&15) continue;
    fputc('\n',stdout);
  }
  fputc('\n',stdout);
  fflush(stdout);

  return (0);
}
